The downloading of software/data files and updates to those files over a network can be bandwidth intensive. For example, in the realm of massively multiplayer online gaming (MMOG), large files are regularly distributed and updated over the Internet to millions of online users. These file distributions not only take time to effect, which interrupts the user's experience, but they also require tremendous bandwidth, which can be expensive for all parties involved. Therefore, a need exists for a method of efficiently distributing such files to the user.
FIG. 1 shows a conventional configuration of an online game system (e.g. for an online role-playing game) operated by an online service company (operator) 120. The online game system includes one or more system servers 100 connected to a network 130 (e.g. Internet connections). The system servers operate to provide a game environment to clients (users) 140 logged into the system through the network. The system servers are connected to one or more databases 110 which store game related data files, typically representing user information and game items. These databases also store files for updating the software for executing game play. The user (i.e. a player of the game) executes game software on a computer system (e.g., a desktop personal computer) using a network connection opened to the game system.
Periodically, the online service company makes changes to the game and uses the game system to distribute these changes (or updates) to the game software resident on the users' computer systems. From the player's perspective, this process involves the player downloading updates to the game software from the system servers onto his/her client computer. This update process usually involves downloading a set of download files. The game software typically includes multiple file types; including data files, executable files, and processed data files (e.g., audio, images, and video). Download files can include any of these types. Further, download files may include new files which have not been previously downloaded to the client and/or new versions (i.e. updates) of previously existing files.
As mentioned above, the size and number of files which need to be downloaded creates a significant bandwidth problem. Therefore, a need exists for techniques which reduce the amount of data which needs to be sent in these downloads.
To address this problem, online service companies may employ a differential compression technique to reduce the amount of data which needs to be sent. When a new version of an existing file is created, the game system may create a delta file. A delta file is a differential file indicating the changes which need to be made to update an existing file. The delta file includes computer instructions on how to modify the previous version of the corresponding file to match the intended new version of the file. Note that a delta file can also include cumulative changes, reflecting a series of updates. Typically, the changes comprising the delta file are much smaller than the size of the complete new version file. This compression technique is particularly effective when the changes are small relative to the overall size of the existing file. Accordingly, the size of the download files can be reduced by substituting much smaller delta files for the larger, new versions of existing files.
Note this “differential compression” technique should not be confused with standard data compression techniques in which an entire file is compressed. For example, several online service companies currently save bandwidth by compressing new files (and delta files) using various lossless compression techniques designed for data files. Irrespective of data compression, online service companies still often send new files in their entirety. Therefore, a need still exists to reduce the amount of data which needs to be sent (or compressed) for new files.